#ifndef SQLCONNPOOL_H
#define SQLCONNPOOL_H

#include <mysql/mysql.h>
#include <assert.h>
#include "../log/log.h"
#include <semaphore.h>

// 创建数据库连接池，程序开始时就创建多个数据库连接，需要使用的时候就从中取出使用
// 如果不适用池，每次需要操作数据库就得频繁创建、断开数据库连接，耗时耗资源，并且有安全隐患

class SqlConnPool {
public:
    static SqlConnPool* Instance();

    void Init(const char* host, int port, 
        const char* user, const char* pwd, 
        const char* dbname, int connsize);

    void ClosePool();
private:
    SqlConnPool();
    ~SqlConnPool();

private:
    int MAX_CONN;
    sem_t m_semId; // 信号量
};

#endif